package Program.ForgetUI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;

public class ForgetUI extends JFrame {
    //顶端容器
    private JPanel northPanel;
    //中间容器
    private JPanel centerPanel;
    //底部容器
    private JPanel southPanel;
    //最小化按钮
    private JButton minimizeButton;
    //关闭按钮
    private JButton closeButton;
    //更新按钮
    private JButton renewButton;
    //返回按钮
    private JButton backButton;
    //账号输入框
    private JTextField userNameField;
    //旧密码输入框
    private JPasswordField oldPasswordField;
    //新密码输入框
    private JPasswordField newPasswordField;
    //手机号输入框
    private JTextField phoneField;
    //用户或者管理员登录选择下拉框
    private JComboBox<String> styleBox;
    //注册面的监听器
    private ForgetListener forgetListener;
    //手机号输入标签
    private JLabel phoneJLabel;


    public ForgetUI() throws HeadlessException {
        //界面初始化
        initJFrame();
        //让界面显示出来，建议写在最后
        this.setVisible(true);
    }

    //主界面
    private void initJFrame(){
        //设置窗口标题图标
        this.setIconImage(new ImageIcon("JFrame_images\\物业管理.png").getImage());
        //设置窗口没又修饰框
        this.setUndecorated(true);
        //设置窗口的大小
        this.setSize(600, 450);
        //设置窗口禁止用户调整
        this.setResizable(false);
        //设置窗口居中
        this.setLocationRelativeTo(null);
        //设置窗口设置边框布局
        this.setLayout(new BorderLayout());
        //设置窗口背景颜色
        this.getContentPane().setBackground(new Color(190, 230, 240));
        //设置窗口关闭模式
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //添加容器
        this.add(this.initNorth(), BorderLayout.PAGE_START);
        this.add(this.initCenter(),BorderLayout.CENTER);
        this.add(this.initSouth(),BorderLayout.PAGE_END);

        // 实例化自定义监听器
        forgetListener = new ForgetListener(this,northPanel,minimizeButton,closeButton,renewButton,
                backButton,userNameField,newPasswordField,phoneField,styleBox,phoneJLabel);

        renewButton.addActionListener(forgetListener);
        minimizeButton.addActionListener(forgetListener);
        closeButton.addActionListener(forgetListener);
        backButton.addActionListener(forgetListener);
        styleBox.addActionListener(forgetListener);
        //设置默认按钮按键（按回车点击更新按钮）
        this.getRootPane().setDefaultButton(renewButton);
    }

    //界面顶端部分
    private JPanel initNorth() {
        //顶端容器赋值对象
        northPanel = new JPanel(null);
        //设置容器大小
        northPanel.setPreferredSize(new Dimension(600, 100));
        //最小化和关闭按钮赋值对象
        minimizeButton = new JButton();
        closeButton = new JButton();
        //设置按钮格式
        //设置位置
        minimizeButton.setBounds(488, 0, 54, 50);
        closeButton.setBounds(542, 0, 58, 50);
        //设置取消焦点
        minimizeButton.setFocusPainted(false);
        closeButton.setFocusPainted(false);
        //设置取消按钮框
        minimizeButton.setBorderPainted(false);
        closeButton.setBorderPainted(false);
        //设置鼠标样式（手的样式）
        minimizeButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
        closeButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
        //设置按钮背景为透明
        minimizeButton.setContentAreaFilled(false);
        closeButton.setContentAreaFilled(false);
        //设置按钮图标
        minimizeButton.setIcon(new ImageIcon("JFrame_images\\最小化1.png"));  //未选中时
        minimizeButton.setRolloverIcon(new ImageIcon("JFrame_images\\最小化2.png"));  //选中时
        minimizeButton.setPressedIcon(new ImageIcon("JFrame_images\\最小化3.png"));  //按下时
        closeButton.setIcon(new ImageIcon("JFrame_images\\关闭1.png"));  //未选中时
        closeButton.setRolloverIcon(new ImageIcon("JFrame_images\\关闭2.png"));  //选中时
        closeButton.setPressedIcon(new ImageIcon("JFrame_images\\关闭3.png"));   //按下时
        //设置背景
        JLabel bgImgJLabel = new JLabel(new ImageIcon("Forget_images\\forgerbg.png"), JLabel.CENTER);
        bgImgJLabel.setBounds(0, 0, 600, 100);
        //添加控件
        northPanel.add(minimizeButton);
        northPanel.add(closeButton);
        northPanel.add(bgImgJLabel);
        return northPanel;
    }

    //界面中间部分
    private JPanel initCenter() {
        //中间容器赋予对象
        centerPanel = new JPanel(null);
        //设置容器的大小
        centerPanel.setPreferredSize(new Dimension(600, 0));
        //设置背景颜色
        centerPanel.setBackground(new Color(190,230,240));
        //设置字体格式
        Font font = new Font("微软雅黑", Font.BOLD, 20);

        //账号类型
        //设置账号类型标签
        JLabel styleJLabel = new JLabel("账号类型");
        //下拉框赋予对象
        styleBox = new JComboBox<String>();
        //添加选项
        styleBox.addItem("居民");
        styleBox.addItem("管理员");
        //设置账号类型标签的位置和大小
        styleJLabel.setBounds(180 ,10,130,50);
        //设置下拉框的位置和大小
        styleBox.setBounds(300,20,100,30);
        //设置账号类型标签的字体
        styleJLabel.setFont(font);
        //设置下拉框的的字体
        styleBox.setFont(new Font("微软雅黑",Font.PLAIN,17));
        //添加控件
        centerPanel.add(styleJLabel);
        centerPanel.add(styleBox);

        //设置账号标签
        JLabel userNameJLabel = new JLabel("账  号");
        //输入框赋予对象
        userNameField = new JTextField();
        //设置账号标签的位置和大小
        userNameJLabel.setBounds(165, 70, 80, 50);
        //设置输入框的位置和大小
        userNameField.setBounds(250, 80, 220, 30);
        //设置字体
        userNameJLabel.setFont(font);
        userNameField.setFont(font);
        //设置提示文字
        userNameField.setToolTipText("最大长度17,最小长度4");
        //添加控件
        centerPanel.add(userNameJLabel);
        centerPanel.add(userNameField);

        //设置新密码标签
        JLabel newPasswordJLabel = new JLabel("新密码");
        //新密码框赋予对象
        newPasswordField = new JPasswordField();
        //设置新密码标签的位置和大小
        newPasswordJLabel.setBounds(165, 130, 80, 50);
        //设置新密码输入框的位置和大小
        newPasswordField.setBounds(250, 140, 220, 30);
        //设置字体
        newPasswordJLabel.setFont(font);
        newPasswordField.setFont(font);
        //设置提示文字
        newPasswordField.setToolTipText("最大长度17,最小长度4");
        //添加控件
        centerPanel.add(newPasswordJLabel);
        centerPanel.add(newPasswordField);

        //设置手机号标签
        phoneJLabel = new JLabel("手机号");
        //手机号输入框赋予对象
        phoneField = new JTextField();
        //手机号标签的位置和大小
        phoneJLabel.setBounds(165,190,80,50);
        //手机号输入框框的位置和大小
        phoneField.setBounds(250,200,220,30);
        //设置字体
        phoneJLabel.setFont(font);
        phoneField.setFont(font);
        //设置提示文字
        phoneField.setToolTipText("输入正确的手机号");
        //添加控件
        centerPanel.add(phoneJLabel);
        centerPanel.add(phoneField);

        return centerPanel;
    }

    //底部容器
    private JPanel initSouth(){
        //底部容器赋予对象
        southPanel = new JPanel(null);
        //设置容器的大小
        southPanel.setPreferredSize(new Dimension(600,90));
        //设置容器的背景颜色
        southPanel.setBackground(new Color(190,230,240));
        //更新按钮赋予对象
        renewButton = new JButton();
        //放回按钮赋予对象
        backButton = new JButton();

        //设置更新按钮格式
        //设置更新按钮的位置和大小
        renewButton.setBounds(280,3,149,64);
        //取消焦点框
        renewButton.setFocusPainted(false);
        //取消边框
        renewButton.setBorderPainted(false);
        //设置按钮背景为透明
        renewButton.setContentAreaFilled(false);
        //设置三种情况下的图标
        renewButton.setIcon(new ImageIcon("Forget_images\\更新按钮1.png"));
        renewButton.setRolloverIcon(new ImageIcon("Forget_images\\更新按钮2.png"));
        renewButton.setPressedIcon(new ImageIcon("Forget_images\\更新按钮3.png"));
        //设置更新按钮的文字提示
        renewButton.setToolTipText("Enter可触发更新");
        //设置鼠标样式（手的样式）
        renewButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
        //添加控件
        southPanel.add(renewButton);


        //设置返回按钮的格式
        //设置返回按钮的位置和大小
        backButton.setBounds(170,10,48,48);
        //取消焦点框
        backButton.setFocusPainted(false);
        //取消边框
        backButton.setBorderPainted(false);
        //设置按钮背景为透明
        backButton.setContentAreaFilled(false);
        //设置三种情况下的图标
        backButton.setIcon(new ImageIcon("JFrame_images\\返回按钮1.png"));
        backButton.setRolloverIcon(new ImageIcon("JFrame_images\\返回按钮2.png"));
        backButton.setPressedIcon(new ImageIcon("JFrame_images\\返回按钮3.png"));
        //设置返回按钮按钮的文字提示
        backButton.setToolTipText("返回登录界面,快捷键Alt+b");
        //添加辅助键
        backButton.setMnemonic(KeyEvent.VK_B);
        //设置鼠标样式（手的样式）
        backButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
        //添加控件
        southPanel.add(backButton);

        //返回底部容器
        return southPanel;
    }
}
